package cc.aiee.wxpay.model.score.refund;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import cc.aiee.core.interfaces.PayJsonBeanInterface;
import cc.aiee.core.kit.KitJson;
import lombok.Data;

@Data
public class WxPayRefundModel implements PayJsonBeanInterface {

	@NotBlank
	private String out_trade_no;

	/**
	 * 交易号
	 */
	private String transaction_id;

	/**
	 * 商户退款单号 <br>
	 * 商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。 <br>
	 * 示例值：1217752501201407033233368018
	 */
	private String out_refund_no;

	/**
	 * 若商户传入，会在下发给用户的退款消息中体现退款原因。 <br>
	 * 展示在退款
	 */
	private String reason;

	private String notify_url;

	/**
	 * 若传递此参数则使用对应的资金账户退款，否则默认使用未结算资金退款（仅对老资金流商户适用）。<br>
	 * 枚举值： AVAILABLE：可用余额账户<br>
	 * 示例值：AVAILABLE
	 */
	private String funds_account;

	@NotNull
	private WxPayAmount amount;

//	private Object goods_detail;

	@Override
	public String toJson() {
		return KitJson.toJSONString(this);
	}

	@Override
	public String toJson(boolean prettyFormat, boolean ignoreNull) {
		return KitJson.toJSONString(this, prettyFormat, ignoreNull);
	}

}
